home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / TUTORIAL / 0855.ZIP / IBMBIOS.TXT < prev    next >
Text File  |  1985-04-07  |  36KB  |  655 lines

  1. Gaslight Software, Berea, Ohio - Programmers reference        Page 132
  2.  
  3. The following describes the services available using the interrupt routines
  4. embedded in the IBM PC-XT bios roms.  Also listed are relevant data locations.
  5.  
  6. Bios data locations:
  7.  
  8. Address        Data Type    Content description
  9. -----------------------------------------------------------------------------
  10. 0040:0000h    (4) word array    Port addresses (up to 4) of RS232 adapters in
  11.                 system (COM1, COM2, COM3 and COM4)
  12. 0040:0008h    (4) word array    Port addresses (up to 4) of printer adapters
  13.                 in system (LPT1, LPT2, LPT3 and LPT4)
  14. 0040:0010h    word        Equipment flag representing installed hardware
  15.                 (refer to INT type 11h for description).
  16. 0040:0013h    word        Installed memory size in 1k increments.
  17. 0040:0017h    byte        Keyboard flag no. 1 (refer to INT type 16h for
  18.                 bit position description).
  19. 0040:0018h    byte        Keyboard flag no. 2. Bit positions:
  20.                     Bit 7 - Insert key is pressed.
  21.                     Bit 6 - Caps lock key is pressed.
  22.                     Bit 5 - Num lock key is pressed.
  23.                     Bit 4 - Scroll lock key is pressed.
  24.                     Bit 3 - Suspend key has been toggled.
  25.                     Bit 2 - ?
  26.                     Bit 1 - ?
  27.                     Bit 0 - ?
  28. 0040:001Ah    word        Pointer to keyboard buffer head.
  29. 0040:001Ch    word        Pointer to keyboard buffer tail.
  30. 0040:001Eh    (16) byte array    Keyboard buffer (room for 15 entries).
  31. 0040:0041h    byte        Diskette status byte (refer to INT type 13h
  32.                 for description).
  33. 0040:0049h    byte        Current video mode (refer to INT type 10h for
  34.                 description).
  35. 0040:004Ah    word        Number of columns on screen.
  36. 0040:004Ch    word        Length of video screen buffer (in bytes).
  37. 0040:004Eh    word        Starting address (offset) of video screen buffer. 
  38. 0040:0050h    (8) word array    Cursor position for each of up to 8 pages.
  39. 0040:0060h    word        Current cursor mode.
  40. 0040:0062h    byte        Current video page being displayed.
  41. 0040:0063h    word        Port address of current video adapter.
  42. 0040:0065h    byte        Current setting of video 3 x 8 register.
  43. 0040:0066h    byte        Current color palette for color card.
  44. 0040:006Ch    double word    double word timer count (refer to INT type 1Ah
  45.                 for description of timer).
  46. 0040:0070h    byte        Timer rollover flag (refer to INT type 1Ah).
  47. 0040:0078h    (4) byte array    Printer port timeout values (up to 4 ports).
  48. 0040:007Ch    (4) byte array    RS232 port timeout values (up to 4 ports).
  49. B000:0000h            Start of monochrome video screen buffer.
  50. B800:0000h            Start of color video screen buffer.
  51.  
  52. Gaslight Software, Berea, Ohio - Programmers reference        Page 133
  53.  
  54. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  55. Interrupt type: 5h
  56. Interrupt name: Print screen
  57. Description:    This routine will copy the current contents of the screen
  58.                 buffer to the printer device.  The cursor position at the 
  59.                 time this routine is invoked will be saved and restored upon
  60.                 completion.  The routine is intended to run with interrupts
  61.                 enabled.  If a subsequent 'print screen` key is depressed
  62.                 during the time this routine is printing, it will be ignored.
  63.                 Address 50:0 contains the status of the print screen:
  64.                 0050:0000 = 0 - Either print screen has not been called or
  65.                                 upon return from a call this indicates a
  66.                                 successful operation.
  67.         0050:0000 = 1 - Print screen is in progress.
  68.         0050:0000 = FFh - An error was encounterd during printing.
  69.         
  70. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  71.  
  72. Gaslight Software, Berea, Ohio - Programmers reference        Page 134
  73.  
  74. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  75. Interrupt type: 10h
  76. Interrupt name: Video I/O
  77. Description:    These routines provide the CRT interface.
  78.                 -------------------------------------------------------------
  79. Inputs:        (AH)=0 - Set video mode. (AL) contains the mode value:
  80.             (AL)=0 - 40 x 25 bw text (power on default)
  81.             (AL)=1 - 40 x 25 color text
  82.             (AL)=2 - 80 x 25 bw text
  83.             (AL)=3 - 80 x 25 color text
  84.             (AL)=4 - 320 x 200 color graphics
  85.             (AL)=5 - 320 x 200 bw graphics
  86.             (AL)=6 - 640 x 200 bw graphics
  87.             (AL)=7 - 80 x 25 monochrome card text
  88.             NOTE: Bw mode operates same as color modes except color
  89.             burst signal is not enabled.
  90.                 -------------------------------------------------------------
  91.                 (AH)=1 - Set cursor type.  CX defines cursor as follows:
  92.             (CH) - Start line for cursor (0-31)
  93.             (CL) - End line for cursor (0-31)
  94.                 -------------------------------------------------------------
  95.                 (AH)=2 - Set cursor position. (0,0) is upper left corner.
  96.                     (DH) - Row
  97.                     (DL) - Column
  98.                     (BH) - Page (must be 0 for graphics modes)
  99.                 -------------------------------------------------------------
  100.                 (AH)=3 - Read cursor position.
  101.                     (BH) - Page number (must be 0 for graphics modes)
  102.                     On exit:
  103.                     (DH) - Cursor row
  104.                     (DL) - Cursor column
  105.                     (CX) - Cursor mode as set above (set cursor type).
  106.                 -------------------------------------------------------------
  107.                 (AH)=4 - Read light pen position.
  108.                     On exit:
  109.                     (AH) = 0 - Light pen switch not down/not triggered
  110.                     (AH) = 1 - Valid light pen value in registers:
  111.                         (DH) - Row of character light pen position.
  112.                         (DL) - Column of character light pen position.
  113.                         (CH) - Raster line (0-199)
  114.                         (BX) - Pixel column (0-319,639)
  115.                 -------------------------------------------------------------
  116.                 (AH)=5 - Select active display page (valid only for text modes).
  117.                     (AL) = New page (0-7 for modes 0&1, 0-3 for modes 2&3).
  118.                 -------------------------------------------------------------
  119.                 (AH)=6 - Scroll defined window region on active page up.
  120.                     (AL) = Number of lines to scroll (0 will blank entire
  121.                            window). Input lines blanked at bottom of window.
  122.                     (CH) = Row of upper left corner of window.
  123.                     (CL) = Column of upper left corner of window.
  124.                     (DH) = Row of lower right corner of window.
  125.                     (DL) = Column of lower right corner of window.
  126.                     (BH) = Attribute to use on blank fill lines at bottom.
  127.                 -------------------------------------------------------------
  128.  
  129. Gaslight Software, Berea, Ohio - Programmers reference        Page 135
  130.  
  131.                 (AH)=7 - Scroll defined window region on active page down.
  132.                     (AL) = Number of lines to scroll (0 will blank entire
  133.                            window). Input lines blanked at top of window.
  134.                     (CH) = Row of upper left corner of window.
  135.                     (CL) = Column of upper left corner of window.
  136.                     (DH) = Row of lower right corner of window.
  137.                     (DL) = Column of lower right corner of window.
  138.                     (BH) = Attribute to use on blank fill lines at bottom.
  139.                 -------------------------------------------------------------
  140.                 (AH)=8 - Read attribute and character at current cursor position.
  141.                     (BH) = Display page to read from (valid for text modes)
  142.                     On exit:
  143.                     (AL) = Character at current cursor position.
  144.                     (AH) = Attribute of character at current cursor position.
  145.                 -------------------------------------------------------------
  146.                 (AH)=9 - Write attribute and character at current cursor position.
  147.                     (BH) = Display page to write to (valid for text modes).
  148.                     (CX) = Count of characters to write.
  149.                     (AL) = Character to write.
  150.                     (BL) = Attribute of character (text mode) or color of
  151.                            character (graphics modes).  If bit 7 of BL = 1,
  152.                            then the color value is exclusive or'd with the
  153.                            current contents at cursor position.
  154.                 -------------------------------------------------------------
  155.                 (AH)=0Ah - Write character only at current cursor position.
  156.                     (BH) = Display page to write to (valid for text modes).
  157.                     (CX) = Count of characters to write.
  158.                     (AL) = Character to write.
  159.                 -------------------------------------------------------------
  160.                 (AH)=0Bh - Set color palette.
  161.                     (BH) = Palette color id being set (0-127).
  162.                     (BL) = Color value to be used with that color id.
  163.                     NOTE: For the current color card, this entry point
  164.                           has meaning only for 320 x 200 graphics.
  165.                           Color id = 0 selects the background color (0-15).
  166.                           Color id = 1 selects the palette to be used:
  167.                               0 = Green(1) /   Red(2)   / Yellow(3)
  168.                               1 = Cyan(1)  / Magenta(2) / White(3)
  169.                           In 40 x 25 or 80 x 25 alpha modes, the value set
  170.                           for palette color 0 indicates the border color
  171.                           to be used (0-31 where 16-31 select the high
  172.                           intensity background set).
  173.                 -------------------------------------------------------------
  174.                 (AH)=0Ch - Write dot to specified pixel location.
  175.                     (DX) = Pixel row number.
  176.                     (CX) = Pixel column number.
  177.                     (AL) = Color value.  If bit 7 of AL = 1 then the color
  178.                            value is exclusive or'd with the current contents
  179.                            of the dot.
  180.                 -------------------------------------------------------------
  181.                 (AH)=0Dh - Read dot at specified pixel location.
  182.                     (DX) = Pixel row number.
  183.                     (CX) = Pixel column number.
  184.                     On exit:
  185.                     (AL) = The dot read.
  186.                 -------------------------------------------------------------
  187.  
  188. Gaslight Software, Berea, Ohio - Programmers reference        Page 136
  189.  
  190.                 (AH)=0Eh - Write character to active page.
  191.                     (AL) = Character to write.
  192.                     (BL) = Foreground color in graphics mode.
  193.                     NOTE: Screen width is controlled by previous mode set.
  194.                 -------------------------------------------------------------
  195.         (AH)=0Fh - Return the current video state (mode).
  196.             On exit:
  197.             (AL) = 0 - 40 x 25 bw text (power on default)
  198.             (AL) = 1 - 40 x 25 color text
  199.             (AL) = 2 - 80 x 25 bw text
  200.             (AL) = 3 - 80 x 25 color text
  201.             (AL) = 4 - 320 x 200 color graphics
  202.             (AL) = 5 - 320 x 200 bw graphics
  203.             (AL) = 6 - 640 x 200 bw graphics
  204.             (AL) = 7 - 80 x 25 monochrome card text
  205.             (AH) = Number of character columns on screen.
  206.             (BH) = Current active display page.
  207.                 -------------------------------------------------------------
  208. Output:        Registers CS, SS, DS, ES, BX, CX, DX preserved during call.
  209.         All other destroyed.
  210.  
  211. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  212.  
  213. Gaslight Software, Berea, Ohio - Programmers reference        Page 137
  214.  
  215. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  216. Interrupt type: 11h
  217. Interrupt name: Equipment determination
  218. Description:    This routine attempts to determine what optional devices are
  219.         attached to the system.
  220.                 -------------------------------------------------------------
  221. Output:        (AX) is set as follows to indicate the attached I/O:
  222.             Bit 15,14 - Number of printers attached.
  223.             Bit 13  - Not used
  224.             Bit 12  - Game I/O attached.
  225.             Bit 11,10,9 - Number of RS232 cards attached.
  226.             Bit 8   - Not used.
  227.             Bit 7,6 - Number of diskette drives (00=1, 01=2,
  228.                     10=3, 11=4 only if bit 0 = 1)
  229.             Bit 5,4 - Initial video mode:
  230.                 00 - unused
  231.                 01 - 40 x 25 bw using color card
  232.                 10 - 80 x 25 bw using color card
  233.                 11 - 80 x 25 using monochrome card
  234.             Bit 3,2 - Planar RAM size (00=16k,01=32k,10=48k,11=64k)
  235.             Bit 1   - Not used.
  236.             Bit 0   - IPL from diskette, this bit indicates that
  237.                 there are diskette drives on the system.
  238.                 -------------------------------------------------------------
  239.         No other registers affected.
  240.  
  241. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  242.  
  243. Gaslight Software, Berea, Ohio - Programmers reference        Page 138
  244.  
  245. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  246. Interrupt type: 12h
  247. Interrupt name: Memory size
  248. Description:    This routine determines the amount of memory in the system as
  249.         represented by the switches on the base board.  Note that the
  250.         system may not be able to use I/O memory unless there is a full
  251.         complement of 64k bytes on the base board.
  252.                 -------------------------------------------------------------
  253. Outputs:    (AX) = Number of contiguous 1k blocks of memory installed.
  254.  
  255. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  256.  
  257. Gaslight Software, Berea, Ohio - Programmers reference        Page 139
  258.  
  259. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  260. Interrupt type: 13h
  261. Interrupt name: Diskette I/O (PC bios without fixed disk)
  262. Description:    This interface provides access to the 5 1/4 diskette drives.
  263.                 -------------------------------------------------------------
  264. Input:        (AH)=0 - Reset diskette system.  Hardware reset to NEC con-
  265.             troller, prepare command, recal required on all drives.
  266.                 -------------------------------------------------------------
  267.                 (AH)=1 - Read the status of the system into (AL).  DISKETTE_
  268.                     STATUS (byte at 0000:0441h) from last operation is
  269.                     returned.
  270.                 -------------------------------------------------------------
  271.                 (AH)=2 - Read the desired sectors into memory. (see below).
  272.                 -------------------------------------------------------------
  273.                 (AH)=3 - Write the desired sectors from memory. (see below).
  274.                 -------------------------------------------------------------
  275.                 (AH)=4 - Verify the desired sectors. (see below).
  276.                 -------------------------------------------------------------
  277.                 (AH)=5 - Format the desired track.  For the format operation,
  278.                     the buffer pointer (ES:BX) must point to the collection
  279.                     of desired address fields for the track.  Each field
  280.                     is composed of 4 bytes (C,H,R,N) where:
  281.                     C = track number, H = head number, R = sector number
  282.                     and N = number of bytes per sector (00=128, 01=256,
  283.                     02=512, 03=1024).  There must be one entry for every
  284.                     sector on the track.  This information is used to find
  285.                     the requested sector during read/write access.
  286.                 -------------------------------------------------------------
  287.                 Register parameters for read/write/verify/format
  288.                     (DL) - Drive number (0-3 allowed, value checked)
  289.                     (DH) - Head number (0-1 allowed, not value checked)
  290.                     (CH) - Track number (0-39, not value checked)
  291.                     (CL) - Sector number (1-8, not value checked, not
  292.                            used for format)
  293.                     (AL) - Number of sectors (max=8, not value checked,
  294.                            not used for format)
  295.                     (ES:BX) - pointer to buffer (not required for verify)
  296.                 -------------------------------------------------------------
  297.                 Data variable - Double word pointer (DISK_POINTER at 0000:
  298.                     0078h) points to the current disk parameter table.
  299.                 -------------------------------------------------------------
  300. Output:        (AH) - Status of operation.  Status codes are defined as
  301.             follows:
  302.             80h - TIME_OUT, attached device failed to respond
  303.             40h - BAD_SEEK, seek operation failed
  304.             20h - BAD_NEC, NEC controller has failed
  305.             10h - BAD_CRC, bad CRC on diskette read
  306.             09h - DMA_BOUNDARY, attempt to DMA across 64k boundary
  307.             08h - BAD_DMA, DMA overrun on operation
  308.             04h - RECORD_NOT_FOUND, requested sector not found
  309.             03h - WRITE_PROTECT, write attempted to write prot disk
  310.             02h - BAD_ADDR_MARK, address mark not found
  311.             01h - BAD_CMD, bad command passed to diskette I/O
  312.         (CY)=0 - Successful operation (AH=0 on return)
  313.         (CY)=1 - Failed operation (AH has error reason)
  314.                 -------------------------------------------------------------
  315.  
  316. Gaslight Software, Berea, Ohio - Programmers reference        Page 140
  317.  
  318.                 For read/write/verify:
  319.                     DS, BX, DX, CH, CL are preserved
  320.                     AL = number of sectors actually read (NOTE: AL may
  321.                          not be correct if time out error occurs).
  322.                 -------------------------------------------------------------
  323.                 NOTE: If an error is reported by the diskette code, the
  324.                     appropriate action is to reset the diskette, then retry
  325.                     the operation.  On read accesses, no motor start delay
  326.                     is taken, so that three retries are required on reads
  327.                     to ensure that the problem is not due to motor startup.
  328.  
  329. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  330.  
  331. Gaslight Software, Berea, Ohio - Programmers reference        Page 141
  332.  
  333. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  334. Interrupt type: 13h
  335. Interrupt name: Fixed disk I/O interface (XT bios with fixed disk)
  336. Description:    This interface provides access to the 5 1/4 diskette drives
  337.         through the fixed disk controller.
  338.                 -------------------------------------------------------------
  339. Input:        (AH)=0 - Reset disk.  (DL = 80h,81h) / diskette.
  340.                 -------------------------------------------------------------
  341.                 (AH)=1 - Read the status of the system into (AL).  DISK_
  342.                     STATUS (byte at 0000:0474h) from last operation is
  343.                     returned. NOTE: DL < 80h - diskette, DL > 80h - disk.
  344.                 -------------------------------------------------------------
  345.                 (AH)=2 - Read the desired sectors into memory. (see below).
  346.                 -------------------------------------------------------------
  347.                 (AH)=3 - Write the desired sectors from memory. (see below).
  348.                 -------------------------------------------------------------
  349.                 (AH)=4 - Verify the desired sectors. (see below).
  350.                 -------------------------------------------------------------
  351.                 (AH)=5 - Format the desired track.
  352.                 -------------------------------------------------------------
  353.                 (AH)=6 - Format the desired track and set bad sector flags.
  354.                 -------------------------------------------------------------
  355.                 (AH)=7 - Format the drive starting at the desired track.
  356.                 -------------------------------------------------------------
  357.                 (AH)=8 - Return the current drive parameters.
  358.                 -------------------------------------------------------------
  359.                 (AH)=9 - Initialize drive pair characteristics.  Interrupt
  360.                     41h points to data block.
  361.                 -------------------------------------------------------------
  362.                 (AH)=0Ah - Read long.
  363.                 -------------------------------------------------------------
  364.                 (AH)=0Bh - Write long.
  365.                 -------------------------------------------------------------
  366.                 (AH)=0Ch - Seek
  367.                 -------------------------------------------------------------
  368.                 (AH)=0Dh - Alternate disk reset (see DL)
  369.                 -------------------------------------------------------------
  370.                 (AH)=0Eh - Read sector buffer.
  371.                 -------------------------------------------------------------
  372.                 (AH)=0Fh - Write sector buffer, (recommended practice before
  373.                     formatting.
  374.                 -------------------------------------------------------------
  375.                 (AH)=10h - Test drive ready.
  376.                 -------------------------------------------------------------
  377.                 (AH)=11h - Recalibrate.
  378.                 -------------------------------------------------------------
  379.                 (AH)=12h - Controller RAM diagnostic.
  380.                 -------------------------------------------------------------
  381.                 (AH)=13h - Drive diagnostic.
  382.                 -------------------------------------------------------------
  383.                 (AH)=14h - Controller internal diagnostic.
  384.                 -------------------------------------------------------------
  385.  
  386. Gaslight Software, Berea, Ohio - Programmers reference        Page 142
  387.  
  388.                 Register parameters for fixed disk operations:
  389.                     (DL) - Drive number (80h-87h for disk, value checked).
  390.                     (DH) - Head number (0-7 allowed, not value checked)
  391.                     (CH) - Cylinder number (0-1023, not value checked)
  392.                     (CL) - Sector number (1-17, not value checked)
  393.                            NOTE: High 2 bits of cylinder number are placed
  394.                            in the high 2 bits of the CL register (10
  395.                            bits total).
  396.                     (AL) - Number of sectors (max range 1-80h, for read/
  397.                            write long 1-79h) (interleave value for format,
  398.                            1 - 16d).
  399.                     (ES:BX) - pointer to buffer (not required for verify)
  400.                 -------------------------------------------------------------
  401.                 Data variable - Double word pointer (DISK_POINTER at 0000:
  402.                     0078h) points to the current disk parameter table.
  403.                 -------------------------------------------------------------
  404. Output:        (AH) - Status of operation.  Status codes are defined as
  405.             follows:
  406.             FFh - SENSE_FAIL, sense operation failed
  407.             BBh - UNDEF_ERR, undefined error occurred
  408.             80h - TIME_OUT, attached device failed to respond
  409.             40h - BAD_SEEK, seek operation failed
  410.             20h - BAD_NEC, NEC controller has failed
  411.             11h - DATA_CORRECTED, ECC corrected data error
  412.             10h - BAD_ECC, bad ECC on diskette read
  413.             0Bh - BAD_TRACK, bad track flag detected
  414.             09h - DMA_BOUNDARY, attempt to DMA across 64k boundary
  415.             07h - INIT_FAIL, drive parameter activity failed
  416.             05h - BAD_RESET, reset failed
  417.             04h - RECORD_NOT_FOUND, requested sector not found
  418.             02h - BAD_ADDR_MARK, address mark not found
  419.             01h - BAD_CMD, bad command passed to diskette I/O
  420.         (CY)=0 - Successful operation (AH=0 on return)
  421.         (CY)=1 - Failed operation (AH has error reason)
  422.                 -------------------------------------------------------------
  423.                 NOTE: Error 11h indicates that the data read had a recoverable
  424.                       error which was corrected by the ECC algorithm.  The data
  425.                       is probably good, however the bios routine indicates an
  426.                       error to allow the controlling program a chance to decide
  427.                       for itself.  The error may not recur if the data is re-
  428.                       written.  (AL) contains the burst length.
  429.                       If an error is reported by the disk code, the appropriate
  430.                       action is to reset the disk, then retry the operation.
  431.                 -------------------------------------------------------------
  432.                 If drive parameters were requested, the following is returned:
  433.                       (DL) = number of consecutive acknowledging drives at-
  434.                              tached (0-2).
  435.                       (DH) = maximum useable value for head number.
  436.                       (CH) = maximum useable value for cylinder number.
  437.                       (CL) = maximum useable value for sector number and
  438.                              cylinder number high bits.
  439.  
  440. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  441.  
  442. Gaslight Software, Berea, Ohio - Programmers reference        Page 143
  443.  
  444. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  445. Interrupt type: 14h
  446. Interrupt name: RS232_IO
  447. Description:    This routine provides byte stream i/o to the communications
  448.                 port according to the parameters:
  449.                 -------------------------------------------------------------
  450. Input:          (AH)=0 - Initialize the communications port
  451.                     (AL) has parameters for initialization
  452.  
  453.                 --- baud rate ---       - parity -    stopbits    length
  454.          bit    7       6       5       4        3       2       1       0
  455.  
  456.                 000 - 110        x0 - none      0 - 1    10 - 7 bits
  457.                 001 - 150        01 - odd       1 - 2    11 - 8 bits
  458.                 010 - 300
  459.                 011 - 600
  460.                 100 - 1200
  461.                 101 - 2400
  462.                 110 - 4800
  463.                 111 - 9600
  464.  
  465.                 On return, conditions set as in call to comm status (AH=3)
  466.                 -------------------------------------------------------------
  467.                 (AH)=1 - Send the character in (AL) over the comm line
  468.                     (AL) register is preserved.
  469.                     On exit, bit 7 of AH is set if the routine was unable
  470.                     to transmit the byte of data over the line.  If bit 7
  471.                     of AH is not set, the remainder of AH is set as in a
  472.                     status request, reflecting the current status of the
  473.                     line.
  474.                 -------------------------------------------------------------
  475.                 (AH)=2 - Receive a character in (AL) from comm line before
  476.                     returning to caller.
  477.                     On exit, AH has the current line status, as set by the
  478.                     status routine, except that the only bits left on are
  479.                     the error bits (7,4,3,2,1).  If AH has bit 7 on (time
  480.                     out) the remaining bits are not predictable.  Thus
  481.                     AH is non zero only when an error occurred.
  482.                 -------------------------------------------------------------
  483.                 (AH)=3 - Return the comm port status in (AX)
  484.                     AH contains the line status:
  485.                     Bit 7 - time out
  486.                     Bit 6 - trans shift register empty
  487.                     Bit 5 - tran holding register empty
  488.                     Bit 4 - break detected
  489.                     Bit 3 - framing error
  490.                     Bit 2 - parity error
  491.                     Bit 1 - overrun error
  492.                     Bit 0 - data ready
  493.                     AL contains the modem status:
  494.                     Bit 7 - received line signal detect
  495.                     Bit 6 - ring indicator
  496.                     Bit 5 - data set ready
  497.                     Bit 4 - clear to send
  498.                     Bit 3 - delta receive line signal detect
  499.                     Bit 2 - trailing edge ring detector
  500.                     Bit 1 - delta data set ready
  501.                     Bit 0 - delta clear to send
  502.                 -------------------------------------------------------------
  503.  
  504. Gaslight Software, Berea, Ohio - Programmers reference        Page 144
  505.  
  506.                 (DX) = Parameter indicating which RS232 card (0,1 allowed)
  507.                 -------------------------------------------------------------
  508.                 Data area RS232_BASE (400h) contains the base address of the
  509.                 8250 on the card, this location contains up to 4 RS232 addresses
  510.                 (word) possible.  Data area label RS232_TIM_OUT (47Ch) contains
  511.                 outer loop count value (byte) for timeouts of up to 4 comm's
  512.                 (default = 1).
  513.  
  514.                 Output:
  515.                     AX modified according to parms of call
  516.                     all others unchanged
  517.  
  518. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  519.  
  520. Gaslight Software, Berea, Ohio - Programmers reference        Page 145
  521.  
  522. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  523. Interrupt type: 15h
  524. Interrupt name: Cassette I/O
  525. Description:    Dummy cassette I/O routine, returns 'invalid cmd' if the
  526.         routine is ever called by accident.
  527.                 -------------------------------------------------------------
  528. Output:        (AX) = 86h
  529.         (CY) = 1
  530.  
  531. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  532.  
  533. Gaslight Software, Berea, Ohio - Programmers reference        Page 146
  534.  
  535. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  536. Interrupt type: 16h
  537. Interrupt name: Keyboard I/O
  538. Description:    These routines provide keyboard support
  539.                 -------------------------------------------------------------
  540. Input:          (AH)=0 - Read the next ascii character struck from the keyboard.
  541.                     Return the result in (AL), scan code in (AH).
  542.                 -------------------------------------------------------------
  543.                 (AH)=1 - Set the Z flag to indicate if an ascii character is
  544.                     available to be read.
  545.                     (ZF)=1 -- no code available
  546.                     (ZF)=0 -- code is available
  547.                     If ZF = 0, the next character in the buffer to be read
  548.                     is in AX, and the entry remains in the buffer.
  549.                 -------------------------------------------------------------
  550.                 (AH)=2 - Return the current shift status in AL register. The
  551.                     bit settings for this code are:
  552.                     Bit 7 - insert state is active
  553.                     Bit 6 - caps lock state has been toggled
  554.                     Bit 5 - num lock state has been toggled
  555.                     Bit 4 - scroll lock state has been toggled
  556.                     Bit 3 - alternate shift key depressed
  557.                     Bit 2 - control shift key depressed
  558.                     Bit 1 - left shift key depressed
  559.                     Bit 0 - right shift key depressed
  560.                 -------------------------------------------------------------
  561.                 Output:
  562.                     As noted above, only AX and flags changed.
  563.                     All other registers preserved.
  564.  
  565. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  566.  
  567. Gaslight Software, Berea, Ohio - Programmers reference        Page 147
  568.  
  569. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  570. Interrupt type: 17h
  571. Interrupt name: Printer I/O
  572. Description:    This routine provides communication with the printer.
  573.                 -------------------------------------------------------------
  574. Input:        (AH)=0 - Print the character in (AL).  On return, AH = 1 if
  575.             character could not be printed (time out).  Other
  576.             bits set as on a normal status call below.
  577.                 -------------------------------------------------------------
  578.                 (AH)=1 - Initialize the printer port.  Returns with AH set
  579.                     with printer status.
  580.                 -------------------------------------------------------------
  581.                 (AH)=2 - Read the printer status into (AH).  The following
  582.                     defines the individual bits:
  583.                     Bit 7 - 1 = not busy
  584.                     Bit 6 - 1 = acknowledge
  585.                     Bit 5 - 1 = out of paper
  586.                     Bit 4 - 1 = selected
  587.                     Bit 3 - 1 = I/O error
  588.                     Bit 2 - not used
  589.                     Bit 1 - not used
  590.                     Bit 0 - 1 = timeout
  591.                 -------------------------------------------------------------
  592.         (DX) = Printer to be used (0,1,2,3) corresponding to actual
  593.             values in PRINTER_BASE (0000:0408h) data table
  594.             which holds the port addresses (words) of up to four
  595.             printer adapter cards.  Data area PRINT_TIM_OUT (4
  596.             bytes at (0000:0478h)) may be changed to cause dif-
  597.             ferent time out waits (default = 20).
  598.                 -------------------------------------------------------------
  599. Output:        (AH) is modified, all others unchanged.
  600.  
  601. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  602.  
  603. Gaslight Software, Berea, Ohio - Programmers reference        Page 148
  604.  
  605. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  606. Interrupt type: 19h
  607. Interrupt name: Bootstrap loader (PC version without fixed disk)
  608. Description:    Track 0, sector 1 is read into the boot location (segment 0
  609.                 offset 7C00h) and control is transferred there.  If there
  610.                 is a hardware error control is transferred to the rom basic
  611.                 entry point.
  612. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  613. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  614. Interrupt type: 19h
  615. Interrupt name: Bootstrap loader (XT version with fixed disk)
  616. Description:    The fixed disk bios replaces the interrupt 19h vector with a
  617.         pointer to this routine.  Reset the disk and diskette parameter
  618.         vectors.  
  619.         The boot strap sequence is as follows:
  620.         - Attempt to load from diskette drive into the boot location
  621.           (0000:7C00h) and transfer control there.
  622.         - If the diskette fails, the fixed disk is tried for a valid
  623.           bootstrap block.  A valid boot block on the fixed disk
  624.           consists of the bytes 055h 0AAh as the last two bytes of the
  625.           block.  If valid, cylinder 0, sector 1 of the fixed disk is
  626.           read into the boot location (0000:7C00h) and control is
  627.           transferred to that location.
  628.         - If the above fails, control is passed to the rom basic entry
  629.           point.
  630.           
  631. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  632.  
  633. Gaslight Software, Berea, Ohio - Programmers reference        Page 149
  634.  
  635. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  636. Interrupt type: 1Ah
  637. Interrupt name: Time of day
  638. Description:    This routine allows the clock to be set/read
  639.                 -------------------------------------------------------------
  640. Input:        (AH)=0 - Read the current clock count. 
  641.                  On exit:
  642.                  (CX) = Upper half of double word count.
  643.                  (DX) = Lower half of double word count.
  644.                  (AL) = 0 if timer has not passed 24 hours since last
  645.                         read.  Non zero if on another day.
  646.                 -------------------------------------------------------------
  647.         (AH)=1 - Set the current clock using the following:
  648.                  (CX) = Upper half of double word count.
  649.                  (DX) = Lower half of double word count.
  650.                 -------------------------------------------------------------
  651.         NOTE: Counts occur at the rate of 1193180/65536 counts/sec,
  652.               or approximately 18.2 per second.
  653.  
  654. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  655.